home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / ab20 / ab20_archive / utilities / emulators / transutils.lzh / MC68010.ins < prev    next >
Text File  |  1991-01-24  |  18KB  |  346 lines

  1.                         AMIGA (tm) TECHNICAL NOTE                  29-Mar-86
  2.  
  3.           Upgrading an AMIGA A1000 with a Motorola MC68010L8
  4.  
  5.                             by Thad Floryan
  6.  
  7.  
  8. For quite awhile now, I've been experimenting using an MC68010L8 in place of
  9. the MC68000 in my Amiga.  The benefits of the MC68010 are great, but several
  10. "problems" with the MC68010 upgrade have held me back from recommending this
  11. simple enhancement to everyone.  Now, the final quirk has been solved, and I
  12. am recommending the upgrade to everyone!
  13.  
  14. This document has several parts, ALL of which must be read and understood by
  15. anyone wishing to perform the upgrade or contract for someone to perform the
  16. upgrade for you.  Additionally, there are several files which accompany this
  17. technical note:
  18.  
  19.                        CHOP.BAS
  20.                        CHOP.C
  21.                        DeciGEL
  22.                        DeciGEL.asm
  23.                        DeciGEL.make
  24.  
  25. The several parts of this document are:
  26.  
  27.          I.  The MC68010 hardware upgrade
  28.  
  29.         II.  The MC68010 software upgrade 
  30.  
  31.        III.  Copy of Motorola's MC68000 Micro Minutes MM-444-02, entitled
  32.              "Advantages of Upgrading an MC68000 to an MC68010".
  33.  
  34.         IV.  Side notes
  35.  
  36.          V.  Trademark notices
  37.  
  38. --------------------------------------------------------------------------
  39.  
  40.                            ** DISCLAIMER **
  41.  
  42. The modification and details described in this technical note are provided
  43. "as is", without warranty of any kind, either expressed or implied, inclu-
  44. ding, but not limited to, the implied warranties of fitness for a particu-
  45. lar purpose.  The entire risk as to the results and performance of the mo-
  46. dification is assumed by you.  In no event will I, Thaddeus P. Floryan Jr,
  47. be liable for direct, indirect, incidental or consequential damages resul-
  48. ting from the use or application of this information.
  49.  
  50. --------------------------------------------------------------------------
  51.  
  52. I. The MC68010 hardware upgrade
  53.  
  54. The MC68010 is pin-for-pin compatible with the MC68000 installed in all
  55. Amiga Model A1000 PCs.  The hardware upgrade consists of replacing the
  56. MC68000 with the MC68010.
  57.  
  58.  
  59.                             ** CAUTION **
  60.  
  61.          The internals of the Amiga are sensitive to static
  62.          and are fragile; working on a computer is not like
  63.          working on your car.  Also, opening the Amiga will
  64.          void your warranty.  It may be worth your peace of
  65.          mind to contract an experienced technician for the
  66.          hardware part of this upgrade.  Common sense and a
  67.          good mechanical aptitude are essential.  Take your
  68.          time and do not rush; restrain your excitement for
  69.          later, after the MC68010 is installed.
  70.  
  71. To open the Amiga, the five screws on the underside of the case must be
  72. removed.  Releasing the cover can be tricky; examine the left side of the
  73. case near the power switch (front side corner) and also 10 inches further
  74. back along the seam and note the tabs: push in until they separate, then
  75. lift the cover up toward the right side of the case and release the tabs
  76. there.  The metal RFI shield covers the entire PC board and must be removed
  77. to gain access to the MC68000.  Remove all the screws along its edge, and
  78. also straighten out the tabs which protrude upwards through the shield, then
  79. lift and remove the shield; be sure to note where each screw is supposed to
  80. be located as there are several types of screws.  The disk drive must also
  81. be removed since it sits over one edge of the MC68000.  First unplug the
  82. two cables (power and signal) after noting the orientation so that they can
  83. be replaced correctly later.  Now remove all screws fastening the disk
  84. drive and lift it up and out: NOTE that the wires to the LED are still
  85. fastened; these do not need to be removed if you turn the drive upside down
  86. and lay it on a thick book alongside the right side of the Amiga case.  Pry
  87. the MC68000 out and replace it with a MC68010L8.  Reverse all the previous
  88. steps to reassemble the Amiga; the tabs which protrude through the RFI
  89. shield need not be twisted back into place.
  90.  
  91. Reconnect all the cables to the Amiga.  Powerup the Amiga and boot with your
  92. usual Kickstart and Workbench disks.  Verify that the system appears to be
  93. working as normal.  Now, either from the Workbench or CLI, startup the
  94. CALCULATOR tool, and perform the operation:  " 9 * 3 = ".  There should be
  95. a software failure; this indicates the MC68010 is running correctly because
  96. the CALCULATOR supplied with V1.1 uses a "MOVE SR,ea" instruction which is
  97. invalid in user-mode with a MC68010.  Reboot the Workbench and proceed now
  98. to section II, software upgrade.
  99.  
  100. If you do not experience the symptoms as described above, there may be
  101. several reasons:
  102.  
  103.       1.  you re-installed the MC68000 instead of the MC68010,
  104.  
  105.       2.  the MC68010 is "dead", or
  106.  
  107.       3.  something else inside the Amiga has been damaged.
  108.  
  109. At this point, you are on your own.  My advice is to re-install the MC68000
  110. and verify that your system works again; if it does, then your MC68010 chip
  111. may be bad.  If your system still does not operate with the MC68000 back in,
  112. then you gotta heap of trouble.  Re-read the DISCLAIMER above, and seek
  113. competent technical service.
  114.  
  115. ---------------------------------------------------------------------------
  116.  
  117. II. The MC68010 software upgrade
  118.  
  119.  
  120. Beginning with V1.1 of Kickstart and Workbench, Commodore-Amiga "officially"
  121. supports operation of the MC68000, MC68010 and MC68020 CPU chips in the
  122. Amiga Model A1000 per:
  123.  
  124.        "With the exception of the Calculator, software in the 1.1 release
  125.         is compatible with the 68010 and 68020 processors.  Application
  126.         programmers wishing to take advantage of such products should be
  127.         sure to use the Exec GetCC() function to get the processor condi-
  128.         tion codes.  (GetCC() handles the differences between the proces-
  129.         sors such as the fact that "MOVE SR," is an invalid user mode
  130.         operation in the 68010 and 68020.)  In addition, programmers
  131.         should be sure to NOT use the upper 8 bits of a pointer for
  132.         storing unrelated information, since the 68020 uses all 32 bits
  133.         for addressing.
  134.  
  135.         = For those doing systems work, Exec maintains flags in the
  136.           AttnFlags field of ExecBase which describe the type of processor
  137.           in your machine.  Exec's coldstart procedure will update certain
  138.           library entry vectors as neccessry to maintain compatibility.
  139.           If you write code that uses the Supervisor() function, keep in
  140.           mind that your stack frame is processor dependent.  Use the
  141.           SuperState() function for processor independent supervisor mode
  142.           entry.
  143.  
  144.         = V1.1 ROMWack will correctly display information for 68010/68020
  145.           address and bus errors.
  146.         "
  147.  
  148. OK, as you can see, simply by having installed the MC68010, you will be able
  149. to use most Amiga system software without any problems.  But, the CALCULATOR
  150. and other programs loaded with libraries using "MOVE SR,ea" will cause your
  151. system to go to lunch with the Guru.  This is the reason I haven't
  152. encouraged people to upgrade their Amigas until now; only a knowledgeable
  153. person would have been able to either live with the occasional problem, or
  154. rebuild the software to not use the "MOVE SR,ea" instructions.
  155.  
  156. So what happened all of a sudden to change my mind?  Simply that one clever
  157. person has developed a short and elegant software solution that prevents
  158. the "MOVE SR,ea" instructions from crashing your system.  "How," you may
  159. ask, "is this done?".  It's done by inserting a "wedge" that intercepts
  160. instruction privilege violations, examining the offending instruction for
  161. the presence of "MOVE SR,ea" and, if found, replacing that instruction in
  162. memory with a "MOVE CCR,ea" and resuming at the point of failure.  Since the
  163. only valid use of the system status register (SR) in a user-mode program
  164. would be to get the condition codes, the assumption made by the "wedge" is
  165. a reasonable one.  And, it works!  I've been testing ALL the cases that
  166. failed previously with the MC68010 in the Amiga and they ALL perform
  167. correctly now.
  168.  
  169. I have included 5 programs with this technical note:
  170.  
  171.                 CHOP.BAS        public domain, author: Anonymous
  172.                 CHOP.C          public domain, author: J S Plegge
  173.                 DeciGEL         public domain, author: Scott Turner
  174.                 DeciGEL.asm     public domain, author: Scott Turner
  175.                 DeciGEL.make    public domain, author: Scott Turner
  176.  
  177. DeciGEL is the "wedge" program that needs to be placed in the "c" directory
  178. of your workbench disk; DeciGEL.asm is the Assembler source file, and the
  179. DeciGEL.make is an EXECUTE file that will recreate DeciGEL from DeciGEL.asm.
  180. If you don't have the Amiga Assembler, you can simply download DeciGEL and
  181. use it immediately.  It is best to include a line in "s/startup-sequence" on
  182. your Workbench disk that will call DeciGEL.  For example:
  183.  
  184.                echo "Workbench disk.  Release 1.1"
  185.                echo " "
  186.                echo "Use Preferences tool to set date"
  187.                echo " "
  188.                DeciGEL
  189.                  .
  190.                  .
  191.  
  192. The CHOP.BAS and CHOP.C programs are used if you download DeciGEL and use
  193. the progam directly, without rebuilding.  The CHOP programs must be used
  194. to make SURE the DeciGEL program is exactly 168 bytes long.  You can
  195. determine the size of DeciGEL on your system by using the CLI's LIST
  196. program.  If the size is greater than 168 bytes, CHOP will allow you to
  197. truncate (or chop) the file to 168 bytes.   CHOP.BAS operates with ABasiC
  198. (not AmigaBASIC), and CHOP.C is the source of a "C" program; use either one
  199. as appropriate for your needs.
  200.  
  201. With the MC68010 installed and DeciGEL "wedged", your Amiga should operate
  202. anywheres from 4% to 50% faster depending on what you're doing.  Note that
  203. the "Boing!" demo will not be faster since its timing is synchronized to
  204. the vertical framing of the monitor's clocking which is FIXED per NTSC TV
  205. standards!  The biggest benefits of the MC68010 upgrade will occur with
  206. heavy number-crunching applications, such as spread sheets and Mandelbrot
  207. picture generations.   Enjoy!
  208.  
  209. --------------------------------------------------------------------------
  210.  
  211. III. M68000 MICRO MINUTES         (c) Motorola                   MM-444-02
  212.  
  213.            Advantages of Upgrading an MC68000 to an MC68010
  214.  
  215.  
  216. There are several ways a system's performance can be upgraded.  Some are
  217. software related, such as lowering operating system overhead, obtaining
  218. better quality language compilers, wisely designing application programs,
  219. and coding applications more efficiently.  Others are hardware related,
  220. such as adding memory, improving I/O channel data rates, increasing mass
  221. storage speed and capacity, reducing memory access times, and upgrading
  222. the system processor's clock frequency.
  223.  
  224. When considering an MC68000 system upgrade to higher performance, the
  225. obvious thought is to redesign for a higher frequency MC68000.  For example,
  226. a current MC68000 system running at 10 MHz could be redesigned to run at
  227. 12.5 MHz, thereby increasing system throughput by 25%.  The "obvious solu-
  228. tion", however, is not necessarily the most appropriate or cost-effective
  229. once several factors are taken into consideration and alternative solutions
  230. examined.
  231.  
  232. The speed-up of a system clock will not be effective unless the system's
  233. memory access time is also improved.  The performance of the MC68000 is
  234. strictly limited by the bus speed, and if no improvement in memory speeds
  235. are available, then an increase in system clock speed will lead to 
  236. negligible improvement in the overall result.  A 10 MHz processor running
  237. with no "wait states" utilizes a 400 nS bus cycle (4 clocks x 100 nS/clock).
  238. This same bus cycle timing, however, leads to a wait cycle on a 12.5 MHz
  239. processor (4 clocks x 80 nS/clock + 80 nS of idle time).  Thus, the bus
  240. performance is exactly the same, but the faster processor is idled for one
  241. complete clock cycle.  Since a decrease in the bus cycle time provides a
  242. directly proportional increase in processor throughput (until, of course,
  243. the memory cycle becomes faster than the fastest processor bus cycle), the
  244. 12.5 MHz processor has no relative performance advantage over the 10 MHz
  245. system.  The bottom line, then, is that in order to be effective, a higher
  246. speed processor must run with fewer or the same number of "wait states".
  247. This normally requires a redesign of the memory subsystem to improve the
  248. memory access time.
  249.  
  250. Referring to the MC68000 Data Manual (ADI-814-R4), the memory access re-
  251. quirements for the various speed processors can be examined.  The effective
  252. memory access time (Taccs) of the MC68000 to a memory array (from assertion
  253. of Address Strobe [-AS] to data valid) is:
  254.  
  255.         Taccs = Tch + 2Tcyc - Tchs1 - Tdic1 + (n * Tcyc)
  256.  
  257. where:
  258.         Tch     is the clock high time (system dependent)
  259.         Tcyc    is the clock period of the processor clock
  260.         Tchs1   is the delay time from the rising edge of the clock to the
  261.                 assertion of address strobe
  262.         Tdic1   is the data input set-up time prior to the falling edge of
  263.                 the clock
  264.         n       is the number of wait cycles in the system
  265.  
  266. Assuming a symmetric clock (50% duty cycle), the memory speed required for
  267. a no "wait-state" bus cycle for a 19 Mhz MC68000 processor is 185 nS (50 +
  268. 200 - 55 -10 + 0).  This bus speed can be easily realized with readily
  269. available 150 nS dynamic RAMs and careful system design.  However, with the
  270. same assumptions, the memory speed required for a no "wait-state" bus cycle
  271. on a 12.5 Mhz processor is reduced to 135 nS (40 + 160 - 55 - 10 + 0) which
  272. presents an obvious problem to the cost-conscious system designer -- lack of
  273. cost-effective, large capacity 100 nS RAMs!
  274.  
  275. Memory access times are not the only difficulty encountered with the faster
  276. clock speeds.  In a similar vein, the design of an efficient 12.5 MHz system
  277. is more difficult than that of a 10 MHz system, since more careful attention
  278. must be paid to the physical design of the board in order to account for the
  279. higher frequency signals present, and the increased sensitivity to transient
  280. phenomena.
  281.  
  282. A "painless" alternative means to EFFECTIVELY increase system performance
  283. is to upgrade to the MC68010 processor.  The MC68010 at equal clock fre-
  284. quencies will run from 8% to 50% faster than an MC68000 without any user
  285. code changes.  The speed-ups are due to several microcode enhancements:
  286. many 32-bit operations, conditional branches, multiply, divide and other
  287. miscellaneous instructions run faster.  Systems which use memory management
  288. can have dramatic improvements with slight operating system changes 
  289. utilizing a few new MC68010 instructions such as "Move to/from Address
  290. Space" (MOVES).
  291.  
  292. Systems may see a significant improvement if they heavily utilize multiply,
  293. divide and looping operations.  Loops run from 23% to 80% faster once the
  294. microcode sets up the automatic "loop mode".  Such loops benefit particular
  295. functions such as block moves, character matching and general string
  296. manipulation operations, and multiple-precision binary and packed BCD
  297. arithmetic.  The new MC68010 multiply is 14 clocks faster, and the divide
  298. is 32 clocks faster than the MC68000.  Programs utilizing (or with the
  299. potential of utilizing) such operations can obtain an increase in perfor-
  300. mance easily exceeding 10%.
  301.  
  302. An additional "plus" of the MC68010 is the provision of a clear path for 
  303. the upgrade of current operating systems to full virtual operating systems
  304. utilizing the sophisticated virtual memory processing capabilities of the
  305. MC68010 (which is the same virtual environment offered by the 32-bit
  306. MC68020).
  307.  
  308. Since the MC68010 is pin-for-pin compatible with the MC68000, *NO* hardware
  309. redesign is necessary.  Only very minor software changes may have to be
  310. made depending on operating system conventions.  The MC68010 differs from
  311. the MC68000 in that: 1) a generic "vector word" has been added to the
  312. MC68010 stack frame; and 2) the MC68000's "MOVE SR,ea" has been made a
  313. privileged operation.
  314.  
  315. Easy software solutions for these two minor differences are: 1) any routines
  316. which build exception stacks (e.g. those which dispatch a routine via an
  317. RTE instruction) are modified to account for the four word stack frame (the
  318. MC68000 uses a three word stack frame); and 2) an exception handler is added
  319. to provide for privilege violations generated by the execution of the
  320. "MOVE SR,ea" instructions in the USER state (local Motorola representatives
  321. can supply a debugged handler to suit the requirements of any OS).  Major
  322. operating systems have been ported from the MC68000 to the MC68010 in less
  323. than a single day, reflecting the trivial changes required in the super-
  324. visory level code.
  325.  
  326. The bottom line is, by upgrading an MC68000 system to an MC68010 system, an
  327. increase in system performance is obtained which is equal to that which a
  328. system redesign from 10 MHz to 12.5 MHz would provide, but with signifi-
  329. cantly less design cost and effort.  The "speed-only" upgrade could only
  330. achieve, at best, a 25% system improvement, and only if the system memory
  331. access time is significantly improved.  The MC68010 upgrade offers from
  332. 8% to 50% improvement.  Note that the speed gained by changing to the
  333. MC68010 is achieved with NO change in memory speeds, NO board redesign,
  334. and NO higher speed parts installed in the system as would be required to
  335. upgrade a system to a 12.5 MHz part.
  336.  
  337. ---------------------------------------------------------------------------
  338. SIDE NOTES:
  339.  
  340. (1)  Commodore-Amiga has provided for the four word stack frame in Exec.
  341.  
  342. (2)  the DeciGEL program is the privilege violation exception handler.
  343.  
  344. ---------------------------------------------------------------------------
  345. Amiga is a registered trademark of Commodore Business Machines, Inc.
  346.